go generics explained simply